home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Bootlegger Magazine (1983)(Bootleg).zip / Bootlegger Magazine (1983)(Bootleg).do / NIBBLE COPYING.txt < prev    next >
Text File  |  1996-12-24  |  14KB  |  456 lines

  1. 7
  2.  
  3. 
  4.  
  5. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  6.  
  7. ][ PRESS SPACEBAR TO QUIT ][
  8.  
  9.  
  10. ***************************************
  11. *                                     *
  12. *           NIBBLE COPYING            *
  13. *                                     *
  14. *                                     *
  15. *                                     *
  16. ***************************************
  17.  
  18.      WELCOME BACK - IT'S BEEN A LONG
  19. WEEK SINCE THE LAST INSTALLMENT, SO
  20. LET'S GET RIGHT TO THE BUSINESS OF
  21. KRACKING WAY OUT.  AFTER THE EXCELLENT
  22. AND CHALLENGING PROTECTION THAT SIRIUS
  23. PUT ON THE BANDITS/CYCLOD GROUP, IT WAS
  24. DISCOURAGING TO SEE THE PUTRID LITTLE
  25. DOS COMMAND CHANGE ON ESCAPE FROM
  26. RUNGISTAN.  WAY OUT IS ABOUT HALFWAY
  27. BETWEEN THE TWO, WITH ENOUGH CHALLENGE
  28. TO MAKE IT INTERESTING, AND ENOUGH DISK
  29. ACCESS TO MAKE IT DIFFERENT.
  30.  
  31.      IN THE FIRST HALF OF THIS EPISODE,
  32. WE WILL DESCRIBE THE REMOVAL OF THE
  33. NIBBLE COUNTS FROM THE DISK TO MAKE IT
  34. COPY WITH NA II, AND IN PART B WE'LL
  35. COVER THE CONVERSION OF THE PROGRAM TO
  36. A TOTALLY COPYA VERSION.
  37.  
  38.      TRACK 0, SECTOR 0 LOADS, OF
  39. COURSE, INTO 800-8FF, AND BRINGS IN A
  40. FAIRLY STRAIGHTFORWARD LOADER FROM THE
  41. REST OF TRACK 0 INTO $9600 UP.  THEY
  42. PUT IT THERE RATHER THE 400-7FF SCREEN
  43. MEMORY IN ORDER TO DO THE RIPPLE VISUAL
  44. EFFECT BANNER (THAT'S ALL IN LO-RES
  45. COLOR, BY THE WAY).  THE LOADER IS
  46. VISIBLE WHEN YOU RESET DURING THE
  47. LOOOONG BOOT (THEY STILL READ IN ALL
  48. THE TRACKS FROM 0 TO 1C TO "CHECK YOUR
  49. APPLE"), AND CHECKING THE END OF THE
  50. BOOT SECTOR AT 890 SHOWS THAT THE
  51. STARTING LOCATION IN THE LOADER IS
  52. 979B.  A SHORT ROUTINE READS THROUGH
  53. ALL THE TRACKS, LOADING THEM AT
  54. STARTING ADDRESSES TAKEN FROM A LOOKUP
  55.  TABLE JUST LIKE BANDITS AND CYCLOD.
  56. FOLLOWING THAT, AT 9811 AND 9814 ARE
  57. JSR'S TO DIFFERENT NIBBLE COUNT
  58. ROUTINES FOR TRACKS 21 AND 22. IN THIS
  59. FIRST PART, WE WILL MAKE THE DISK COPY
  60. WITH NA II BY CHANGING THE SIX BYTES
  61. FOR THE TWO JSR'S TO NOP'S. BUT BEFORE
  62. WE DO THAT, LET'S TAKE A MINUTE TO LOOK
  63. AT THE COPY PROTECTION SCHEMES ON THESE
  64. TWO TRACKS. TRACK 21 HAS A GOOD,
  65. OLD-FASHIONED NIBBLE COUNT WHERE THEY
  66. DETERMINE THE NUMBER OF BYTES BETWEEN
  67. THE TWO OCCURRANCES OF 'AA' ON THE
  68. TRACK.  THIS IS THE KIND OF COUNT THAT
  69. NA II EATS FOR BREAKFAST, SO IT'S NOT
  70. HARD TO GET AROUND.  TRACK 22, ON THE
  71. OTHER HAND, SHOWS THAT SIRIUS HAS BEEN
  72. READING THE DOCS ON THE MAJOR NIBBLE
  73. COPIERS - WE SURE HOPE THEY BOUGHT THEM
  74. ALL, RIGHT? IN ORDER TO DO A NIBBLE
  75. COUNT, A COPIER HAS TO KNOW WHERE TO
  76. START COUNTING AND SOMETIMES WHERE TO
  77. ADD OR DELETE THE SPARE NIBBLES.  TO DO
  78. THIS, NA II ALLOWS YOU TO ENTER AN
  79. 8-BYTE ADDRESS MARKER, WHILE LS 4.1
  80. ALLOWS 9 BYTES TO INCLUDE A NORMAL
  81. 3-BYTE HEADER, VOL #, TRACK#, AND
  82. SECTOR # AT TWO BYTES EACH.  THIS TRACK
  83. HAS SEVERAL SECTIONS WITH NORMAL "GAPS"
  84. JUST LIKE NA AND LS LOVE TO FIND, ALL
  85. BEGINNING WITH THE BYTE SEQUENCE AA,
  86. D5, D5, FF, D6, FF, FD, FD, DD.  THE
  87. PROGRAM, HOWEVER, LOOKS FOR THE NEXT
  88. THREE BYTES AS WELL, AND THESE MUST BE
  89. EA, B5, F7.  ALL BUT ONE OF THESE 9-BIT
  90. SEQUENCES HAVE OTHER BYTES FOR THE NEXT
  91. THREE, AND THESE WILL BE INCORRECTLY
  92. CHOSEN FOR THE ADDRESS MARKER BY ANY OF
  93. THE POPULAR COPIERS.  THE ENTIRE TRACK
  94. IS READ 16 TIMES, AND THE CHECKSUM FOR
  95. THE 64K BYTES READ IN MUST AGREE WITH
  96. THE ONE IN THE PROGRAM, OR THE DISK
  97. REBOOTS. DEVIOUS ENOUGH, BUT QUITE
  98. VISIBLE IN A LOADER THAT WASN'T WELL
  99. HIDDEN.
  100.  
  101.      TO CHANGE THOSE NIBBLE COUNT JSR'S
  102. TO NOP'S, WE HAVE TO ALTER THE ACTUAL
  103. NIBBLES ON THE TRACK.  ANY ALTERATION
  104. WILL CHANGE THE CHECKSUM FOR THE TRACK,
  105. SO WE FIRST HAVE TO NEGATE THE CHECKSUM
  106. COMPARISON ROUTINE. THE SAME PROCESS IS
  107. USED FOR THE ACTUAL REMOVAL OF THE
  108. NIBBLE COUNT, SO WE'LL DO THE EASY ONE
  109. FIRST.
  110.  
  111.      IT'S BEEN A WHILE SINCE WE LOOKED
  112. AT THE TECHNIQUE USED BY SIRIUS
  113. TO ENCODE INFORMATION ON THE DISK, SO
  114. LET'S REVIEW FOR A MINUTE.  REMEMBER
  115. THAT MOST PROTECTED SIRIUS SOFTWARE
  116. DOES NOT USE REGULAR SECTORS, BUT AN
  117. UNSEGMENTED STREAM EQUIVALENT TO C00
  118. BYTES OF DATA ON EACH TRACK. AFTER THE
  119. ADDRESS MARKER OF AD DA DD (THE SIRIUS
  120. TRADEMARK), EVERY BYTE IS ENCODED IN A
  121. 4+4 FORMAT WHERE HALF THE INFORMATION
  122. IS STORED IN EACH NIBBLE (A BRIEF ASIDE
  123. - THE USE OF THE TERM 'NIBBLE' IS
  124. CONFUSING AND A LITTLE BIT ERRONEOUS
  125. WHEN USED IN DESCRIBING DISK ACCESS.
  126. IT FORMALLY REFERS TO EITHER THE
  127. LEFT-HAND OR RIGHT-HAND FOUR BITS OF A
  128. BYTE, AND HAS BEEN CONTINUED IN USAGE
  129. FOR THE UNITS OF INFORMATION STORAGE ON
  130. A DISK, EVEN THOUGH MANY SCHEMES, LIKE
  131. DOS 3.3, USE A VERY DIFFERENT METHOD OF
  132. ENCODING THE 8 BITS OF A BYTE ONTO A
  133. DISK 'NIBBLE'.  IN ALMOST ALL CASES, ON
  134. THE APPLE, INFORMATION IS RECOVERED
  135. FROM THE DISK IN A SERIES OF EIGHT-BIT
  136. BYTES WHICH THEN MUST BE FURTHER
  137. PROCESSED TO DECODE THE REAL BINARY
  138. INFORMATION CONTAINED IN THEM).
  139.  
  140.      THE FULL SEQUENCE OF INSTRUCTIONS
  141. WHICH PERFORM THE DECODING WAS LISTED
  142. IN KKK #1; BUT BRIEFLY, THE FIRST
  143. NIBBLE (BYTE) IS READ IN, THE CARRY BIT
  144. IS SET, AND THE RESULT IS ROTATED LEFT
  145. ONCE. THIS SHIFTED NIBBLE IS "ANDED"
  146. WITH THE NEXT NIBBLE, AND THE RESULT
  147. STORED IN MEMORY AS A FULL BYTE.  IN
  148. ORDER TO CHANGE A BYTE ON THE TRACK,
  149. IT'S NECESSARY TO RECONSTRUCT THE
  150. NIBBLES AS THEY WILL APPEAR ON THE
  151. TRACK AND FIND THEM WITH A NIBBLE
  152. EDITOR.  FOR EXAMPLE, TO FIND THE BYTES
  153. WHICH CORRESPOND TO THE CHECKSUM
  154. ROUTINE, WE NEED TO LOOK AT THE
  155. INSTRUCTIONS AT $9887. THEY ARE 'EOR
  156. $F5, BNE 988D', OR BRANCH TO A RE-READ
  157. ROUTINE IF THE EXCLUSIVE-OR BETWEEN THE
  158. ACCUMULATOR AND THE CHECKSUM IN
  159. LOCATION F5 IS NOT ZERO. WE CAN GET
  160. AROUND THIS RE-READ IF WE CHANGE THE
  161. BYTES FOR 'BNE 988D' FROM 'D0 02' TO
  162. TWO NOP'S: 'EA EA'.
  163.  
  164.      THE DATA NIBBLES ALLOWED ON THE
  165. DISK UNDER THIS SYSTEM MUST HAVE THE
  166. MOST SIGNIFICANT BIT SET, AND AT LEAST
  167. EVERY SECOND BIT SET TO ONE: THE ONLY
  168. VALID NIBBLES ARE A (1010), B (1011), E
  169. (1110), AND F(1111). SPARING THE VERY
  170. GORY DETAILS, A BYTE HAS ITS FIRST HALF
  171. IN ONE TRACK NIBBLE, AND ITS SECOND
  172. HALF IN THE NEXT:
  173.  
  174.           -------SECOND BYTE
  175.          /   /
  176.        EA  FA
  177.       /   /
  178.      ------------FIRST BYTE
  179.  
  180.  
  181. THE TABLE BELOW IS USED TO "BUILD UP"
  182. THE SIRIUS-FORMAT TRACK NIBBLES:
  183.  
  184.                  FIRST     SECOND
  185.        BYTE      HALF      HALF
  186.        ----      -----     ------
  187.  
  188.          0         A         A
  189.          1         A         B
  190.          2         B         A
  191.          3         B         B
  192.          4         A         E
  193.          5         A         F
  194.          6         B         E
  195.          7         B         F
  196.          8         E         A
  197.          9         E         B
  198.          A         F         A
  199.          B         F         B
  200.          C         E         E
  201.          D         E         F
  202.          E         F         E
  203.          F         F         F
  204.  
  205.  
  206. TO BUILD UP 'D0', FOR EXAMPLE, USE
  207. E-  F- FOR THE 'D' AND -A  -A FOR THE
  208. ZERO, THEN COMBINE THEM TO GIVE
  209. EA FA FOR 'D0'.  THE '02' BYTE IS THEN
  210. A-  A-  PLUS -B  -A  TO MAKE AB AA. THE
  211. COMPLETE NIBBLE STRING FOR 'D0 02' IS
  212. EA FA AB AA.
  213.  
  214.  TO DO THE NIBBLE EDITING THAT FOLLOWS,
  215. THE BEST UTILITY IS PROBABLY THE
  216. TRACK/BIT EDITOR OF NIBBLES AWAY II.
  217. LOAD NA II, ENTER D5 AA 96 FOR THE
  218. ADDRESS MARKER, SELECT THE TRACK EDITOR
  219. AND READ IN TRACK ZERO.  TYPE 'Z' TO
  220. ALLOW THE PROGRAM TO ANALYZE THE TRACK,
  221. THEN MOVE THE CURSOR TO THE PAGE
  222. CONTAINING THE POINTER (USUALLY 6700).
  223. TYPE 'S' FOR STRING SEARCH AND ENTER
  224. EA FA AB AA (AS A GENERAL RULE,
  225. SEARCHING FOR A TWO-BYTE SEQUENCE IN A
  226. PROGRAM IS RISKY, WHILE A FOUR-BYTE
  227. SEQUENCE IS PRETTY SAFE.  IN THIS CASE,
  228. YOU REALLY SHOULD ADD THE PRECEDING TWO
  229. BYTES 45 F5, WHICH TRANSLATE TO
  230. BA EF FA FF). WHEN THIS STRING IS
  231. LOCATED, REPLACE IT WITH THE EQUIVALENT
  232. OF TWO EA'S: FF EA FF EA, AND WRITE IT
  233. TO A BLANK DISK WITH THE 'W' KEY.
  234.  
  235.      WITH THE CHECKSUM SAFELY REMOVED,
  236. YOU CAN FOLLOW THE SAME GENERAL
  237. PROCEDURE TO REMOVE THE NIBBLE COUNT
  238. JSR'S AT 9811 AND 9814, ALLOWING YOU TO
  239. MAKE A WORKING COPY OF WAY OUT
  240. WITH NA II. TRACK ZERO WOULD USE
  241. D5 AA 96 AS AN ADDRESS MARKER, AND
  242. TRACKS 1-1C USE AD DA DD.
  243.  
  244.      THIS PART OF THE KORNER IS DEVOTED
  245. TO MAKING WAY OUT (AND HOPEFULLY
  246. SIMILAR GAMES IN THE FUTURE) COPYA.
  247. WAY OUT IS STRUCTURED IN THE FOLLOWING
  248. WAY: IT HAS A MAIN PROGRAM SPLIT
  249. BETWEEN 800-1FFF AND 6000-9BFF; AND TWO
  250. HI-RES PICTURES (START GAME AND SAVED
  251. GAME) WHICH LOAD AT DIFFERENT TIMES
  252. INTO 4000-5FFF. TRACK 1B CONTAINS BEST
  253. SCORES AND INITIALS, AND TRACK 1C
  254. CONTAINS INFORMATION FOR THE SAVED
  255. GAME.  BOTH OF THESE TRACKS ARE LOADED
  256. INTO A000-ABFF AND THE CRUCIAL
  257. INFORMATION RELOCATED TO SOME SLOTS AT
  258. 1A00-1C34. THE DATA FOR THE 26 MAZES
  259. ARE STORED TWO TO A TRACK IN TRACKS
  260. 1-D; THESE ARE ALSO LOADED INTO THE
  261. A000 SPACE FOR TRANSFER TO 1A00 AND UP.
  262.  FORTUNATELY, THERE IS ROOM IN MEMORY
  263. FOR THE RWTS ROUTINES (900 HEX), AND
  264. THE INDIVIDUAL READ AND WRITE
  265. SUBROUTINES WILL FIT EASILY INTO THE
  266. SPACE OF THE ORIGINAL ONES.
  267.  
  268.      THE EASIEST WAY TO GET THE MAIN
  269. PROGRAM LOADED IN IS AS A SINGLE FILE,
  270. USING THE ROUTINE BUILT INTO THE DOS
  271. BOOT.  DOING IT THIS WAY SAVES SOME
  272. PROGRAMMING TIME, AND SPEEDS THE LOAD,
  273. SINCE NO SEPARATE LOAD IS NEEDED FOR
  274. THE APPROPRIATE PICTURE AND SAVED GAME.
  275. THIS MAIN PROGRAM IS A TOTAL OF A4
  276. (164) SECTORS, RUNNING FROM 800 TO
  277. ABFF. A GOOD WAY TO SET THIS UP IS TO
  278. BOOT A DOS 3.3 DISK BEFORE YOU BOOT THE
  279. GAME, AND HIT RESET AFTER THE GAME IS
  280. COMPLETELY LOADED (THIS ASSUMES THAT
  281. YOU HAVE A NON-AUTOSTART ROM IN THE F8
  282. SOCKET). RWTS WILL STILL BE INTACT AT
  283. B700-BFFF, AND YOU CAN WRITE THE ENTIRE
  284. PROGRAM ONTO AN INITIALIZED DISK WITH
  285. THE INSPECTOR (THE INSPECTOR IN ROM AT
  286. D800, PREFERABLY WITH WATSON AT D000,
  287. IS AN ABSOLUTE MUST FOR EFFICIENT
  288. KRACKING OF TODAY'S SOFTWARE).
  289. REMEMBER TO CHANGE LOCATIONS 3D9-3DB TO
  290. '4C 00 BD' TO ALLOW THE INSPECTOR TO
  291. FIND RWTS, THEN WRITE THE PROGRAM ONTO
  292. THE DISK USING CONTROL-W,
  293. CONTROL-I-REPEAT, ONTO TRACK E, SECTOR
  294. 0 TO TRACK 18, SECTOR 3.
  295.      THE 13 DATA TRACKS THAT COMPRISE
  296. THE MAZES SHOULD NEXT BE TRANSFERRED TO
  297. TRACKS 1-D OF THE NEW DISK.  LOCATIONS
  298. 988F-98AB OF THE ORIGINAL LOADER
  299. CONTAIN THE TABLE OF STARTING ADDRESSES
  300. FOR EACH TRACK. USE THE NIBBLE
  301. ALTERATION SCHEME DISCUSSED IN PART A
  302. TO ALTER THE LOCATIONS SO THAT EACH
  303. TRACK LOADS INTO AN EVEN 1000 ADDRESS
  304. -- T1 TO 1000, T2 TO 2000, ETC., UP TO
  305. T8 AT 8000. ALSO CHANGE LOCATION 980E
  306. TO 1C SO THE LOAD WILL END AFTER THE
  307. GAME TRACKS ARE IN. WHEN YOU BOOT THE
  308. GAME DISK WITH THESE ALTERED LOCATIONS,
  309. THE GAME TRACKS WILL LOAD OBEDIENTLY
  310. WHERE THEY'RE TOLD. SAVE THESE ONTO THE
  311. SAME TRACKS ON THE DOS 3.3 DISK WITH
  312. THE INSPECTOR, THEN GO BACK AND DO
  313. TRACKS 9-D BY ALTERING THEIR LOAD
  314. LOCATIONS AND SAVING THEM. THE SAVED
  315. GAME PICTURE CAN BE SAVED OUT SIMILARLY
  316. BY RESETTING AFTER RESTARTING THE SAVED
  317. GAME. SAVE THE PICTURE ANYWHERE SAFE;
  318. TRACKS 1F AND 20 ARE OK. YOUR DOS DISK
  319. NOW CONTAINS ALL THE DATA FOR THE GAME,
  320. AND ALL YOU NEED ARE A FEW QUICK READ
  321. AND WRITE SUBROUTINES.
  322.  
  323.      TO USE THE DOS BOOT ROUTINE TO
  324. LOAD THE BIG PART, READ IN T0, S1 FROM
  325. A STANDARD DOS 3.3 DISK. MAKE THE
  326. FOLLOWING CHANGES, AND WRITE IT BACK
  327. OUT TO YOUR DISK:
  328.  
  329.   LOCATION    MEANING        NEW VALUE
  330.   --------    -------        ---------
  331.  
  332.      15     FIRST TRACK          18
  333.      1A     FIRST SECTOR         03
  334.      E0     # OF SECTORS         A4
  335.      E7     FIRST STORAGE PAGE+1 AC
  336.  
  337. WHEN THE DISK IS BOOTED, STAGE 1 THINKS
  338. IT'S LOADING IN DOS STAGE 2, BUT IT'S
  339. REALLY YOUR PROGRAM.
  340.  
  341.      TO DO THE REST OF THE DISK ACCESS,
  342. THE FOLLOWING ROUTINES FROM THE
  343. ORIGINAL MUST BE DUPLICATED FOR THE
  344. RWTS FORMAT:
  345.  
  346.      OLD    NEW
  347.    TRACK #  T/S   CONTENT  FUNCTION
  348.    -------  ---   -------  --------
  349.  
  350.      1B     18/4- SCORES   READ & WRITE
  351.             18/F
  352.      1C     17/8- SAVED      "  "   "
  353.             18/3   DATA
  354.    15-17    19/0- SAVED HI-  "  "   "
  355.             20/F   RES PIC
  356.    1 TO D   1/0-  GAME     READ ONLY
  357.             D/0    DATA
  358.  
  359.  
  360.      TO USE RWTS, THE FOLLOWING NUMBERS
  361. MUST BE LOADED INTO IT (COMPUTER
  362. SCIENCE MAJORS CALL THIS "PARAMETER
  363. PASSING").
  364.  
  365.   LOCATION     CONTENTS
  366.   --------     --------
  367.  
  368.      B715      STARTING(HIGHEST) TRACK#
  369.      B71A      STARTING SECTOR
  370.      B726      0=SEEK, 1=READ, 2=WRITE
  371.      B70E      # OF SECTORS/PAGES
  372.      B7E7      FIRST MEM. PAGE LOAD+1
  373.  
  374.  
  375. SO THAT READING DATA FROM T17,S8
  376. THROUGH T18,S3 INTO A000 TO ABFF
  377. REQUIRES:
  378.  
  379.        B715:18
  380.        B71A:03
  381.        B726:01
  382.        B7E0:0C
  383.        B7E7:AC, FOLLOWED BY JSR B700.
  384.  
  385. YOU CAN SCATTER THE NECESSARY "STUFF
  386. AND JUMP" ROUTINES BETWEEN 9600 AND
  387. 9800. THE NICELY-ORGANIZED JUMP TABLE
  388. AT 9600-961E WILL TELL YOU WHERE EACH
  389. ONE SHOULD BE, AND ALLOWS THE REST OF
  390. THE PROGRAM TO USE THEM WITHOUT KNOWING
  391. THEY'VE BEEN CHANGED.
  392.  
  393.      ONE FURTHER CHANGE THAT'S REQUIRED
  394. IS THE ROUTINE TO CALCULATE THE GAME
  395. TRACK TO BE READ IN. AN INPUT ROUTINE
  396. DEEP IN THE BOWELS OF THE MAIN PROGRAM
  397. ACCEPTS THE KEYPRESS, QUALIFIES IT, AND
  398. SUBTRACTS $C1 TO GIVE 0-19 FOR THE
  399. LETTERS A-Z. THE CODE AT 962C WHICH
  400. DOES THE CALCULATION THEIR WAY IS:
  401.  
  402.                LDA $9623
  403.                AND #$FE
  404.                CLC
  405.                ADC #$02
  406.                JSR 981A
  407.  
  408. TRACK ACCESS IN THE SIRIUS SYSTEM IS
  409. LISTED IN HALF-TRACKS, SO ALL TRACK
  410. NUMBERS ARE DOUBLED IN THE CODE.  THEY
  411. TAKE THE MAZE NUMBER 0-19 AND MASK OFF
  412. THE LOW BIT, SINCE BOTH EVEN AND ODD
  413. MAZE NUMBERS WILL BE ON THE SAME TRACK.
  414. THEY ADD 2 SINCE THE FIRST MAZE TRACK
  415. IS #1, AND JUMP TO THE TRACK READER. IN
  416. OUR SYSTEM, THIS BECOMES:
  417.  
  418.                LDA $9623
  419.                LSR
  420.                CLC
  421.                ADC #$1
  422.                JSR 9800
  423.  
  424. WE SHIFT THE NUMBER RIGHT ONCE TO
  425. DIVIDE IT BY TWO AND INCLUDE THE
  426. EVEN/ODD GAME, THEN ADD 1 TO GET THE
  427. WHOLE TRACK NUMBER FOR RWTS.
  428.  
  429.      ABOUT ALL THAT'S LEFT IS TO PUT A
  430. LITTLE BIT OF FLASH ON THE TITLE PAGE,
  431. AND YOU HAVE A NICELY PACKAGED COPYA
  432. VERSION OF WAY OUT.
  433.  
  434.      A FOOTNOTE--IN AN INCREDIBLE
  435. EXERCISE OF STUPIDITY, SIRIUS LEFT IN A
  436. FAIR PART OF THE ASSEMBLER SOURCE FILE
  437. FOR THE PROTECTION SCHEME EMPLOYED.  IF
  438. YOU READ THROUGH THE MEMORY AT
  439. C00-1FFF, YOU WILL FIND LARGE CHUNKS OF
  440. AN ASCII FILE WITH SUCH GEMS AS "JSR
  441. NBLCNT", ETC. YOU CAN ALSO SEE IT BY
  442. LOADING AND RESETTING THE PROGRAM, THEN
  443. TYPING THE MONITOR COMMANDS
  444. 400<C00.FFFM OR 400<1000.13FFM, AND SO
  445. ON. THESE WILL PUT THE FILE ON THE
  446. SCREEN FOR YOUR PERUSAL. THIS REMINDS
  447. ME OF LOCKING YOUR VALUABLES IN A SAFE
  448. AND THEN WRITING THE COMBINATION ON THE
  449. DOOR!  THE PROTECTION SCHEME, BY THE
  450. WAY, WAS WRITTEN BY ZERO PAGE
  451. ENTERPRIZES, WHICH HAS NO CONNECTION
  452. WHATEVER WITH THE WELL-KNOWN KRACKIST
  453. OF THE SAME NAME.
  454.  
  455.  
  456.